package com.onemile.utils;

/**
 * �첽����ӿ�
 */
public interface ISupportAsyncTask
{
	/**
	 * ִ���첽����
	 * 
	 * @param taskName
	 *            ������
	 * @param params
	 *            ����
	 * @return ���� ID
	 */
	String executeAsyncTask(String taskName, Object[] params);
	
	/**
	 * ������� ID ȡ������
	 * 
	 * @param taskId
	 *            ���� ID
	 */
	void cancelAsyncTask(String taskId);
	
	/**
	 * �첽����ʼ���˺��������߳���ִ��
	 * 
	 * @param taskName
	 *            ������
	 * @param params
	 *            ����
	 */
	void onAsyncTaskStart(String taskName, Object[] params);
	
	/**
	 * �첽�����ں�ִ̨�У��˺������첽�߳���ִ��
	 * 
	 * @param taskName
	 *            ������
	 * @param params
	 *            ����
	 * @return ���񷵻�ֵ
	 * @throws Exception
	 */
	Object onAsyncTaskInBackground(String taskName, Object[] params) throws Exception;
	
	/**
	 * �첽������ɣ��˺��������߳���ִ��
	 * 
	 * @param taskName
	 *            ������
	 * @param params
	 *            ����
	 */
	void onAsyncTaskEnd(String taskId, String taskName, Object[] params, Object result);
	
	/**
	 * �첽����ȡ��˺��������߳���ִ��
	 * 
	 * @param taskName
	 *            ������
	 */
	void onAsyncTaskCancelled(String taskName);
	
	/**
	 * �첽�������쳣���˺��������߳���ִ��
	 * 
	 * @param taskName
	 *            ������
	 * @param e
	 *            �쳣
	 */
	void onAsyncTaskError(String taskId, String taskName, Exception e);
}
